﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BO;

namespace WebMotel
{
    public partial class frmAcomodacoes : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Page.EnableViewState = true;
                Page.Form.Attributes.Add("enctype", "multipart/form-data");

                if (!Page.IsPostBack)
                {
                    // mtv.SetActiveView(viewIncial);
                    AcomodacaoTipoBO.Listar(ddlPesquisar_TipoAcomodacao);
                    ddlPesquisar_TipoAcomodacao.Items[0].Text = "Todos";

                    AcomodacaoTipoBO.Listar(ddlEditar_TipoAcomodacao);
                    AcomodacaoTipoBO.Listar(ddlCadastrar_TipoAcomodacao);

                    pesquisar();
                }
            }
            catch (Exception)
            {

                throw;
            }
        }

        #region Funções
        public int PaginaAtual //Propriedade da página atual, colocada no viewstate
        {
            get
            {
                object o = this.ViewState["PaginaAtual"];
                if (o == null || (int)o < 0)
                {
                    return 0;
                }
                else
                {
                    return (int)o;
                }
            }
            set
            {
                this.ViewState["PaginaAtual"] = value;
            }
        }
        protected void lnkProximo_Click(object sender, EventArgs e)
        {
            PaginaAtual++;
            pesquisar();
        }

        protected void lnkAnterior_Click(object sender, EventArgs e)
        {
            PaginaAtual--;
            pesquisar();
        }
        public void showMensagem(string tipo, string mensagem)
        {
            divMensagem.Attributes["class"] = "mensagem " + tipo;
            pMensagem.InnerText = mensagem;
        }
        public void setActive(string li)
        {
            divMensagem.Attributes["class"] = "mensagem ";

            if (li == "pesquisar")
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Seta Atctive", "setDivPesquisar()", true);
            }

            else if (li == "editar")
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Seta Atctive", "setDivEditar()", true);
            }

            else if (li == "cadastrar")
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Seta Atctive", "setDivCadastrar()", true);
            }
        }
        public void pesquisar()
        {
            divMensagem.Attributes["class"] = "mensagem ";

            try
            {
                int id = 0;
                if (!string.IsNullOrEmpty(txtPesquisar_ID.Text.Trim()))
                    id = int.Parse(txtPesquisar_ID.Text);

                int tipoID = 0;
                if (ddlPesquisar_TipoAcomodacao.SelectedIndex > 0)
                    tipoID = int.Parse(ddlPesquisar_TipoAcomodacao.SelectedValue);

                var objs = (from a in AcomodacaoBO.Listar(id, tipoID, 0, txtPesquisar_Nome.Text, txtPesquisar_Descricao.Text)
                            select new
                            {
                                ID = a.id,
                                Tipo = a.AcomodacaoTipo.descricao,
                                Nome = a.nome,
                                Descricao = a.descricao
                            }).ToList();

                PagedDataSource Pgs = new PagedDataSource();
                Pgs.AllowPaging = true; //Seta paginação no PagedDataSource
                Pgs.DataSource = objs; // No caso, está setando como datasource o um objeto mas pode ser por exemplo, um DataSet.
                Pgs.PageSize = 30; //Número de registros por página

                int cont = Pgs.PageCount;

                if (PaginaAtual >= Pgs.PageCount)
                {
                    PaginaAtual--;
                }
                else if (PaginaAtual < 0)
                {
                    PaginaAtual++;
                }

                Pgs.CurrentPageIndex = PaginaAtual;
                rptListagem.DataSource = Pgs;
                rptListagem.DataBind();

                PaginaAtual++;
            }
            catch (Exception)
            {

                throw;
            }
        }
        public void carregaForm(int id)
        {
            divMensagem.Attributes["class"] = "mensagem ";

            try
            {
                Acomodacao obj = AcomodacaoBO.Selecionar(id);

                txtEditar_ID.Text = obj.id.ToString();
                ddlEditar_TipoAcomodacao.SelectedValue = obj.acomodacaoTipoID.ToString();
                txtEditar_Descricao.Text = obj.descricao;
                txtEditar_Nome.Text = obj.nome;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {

            }
        }

        public void excluir(int id)
        {
            divMensagem.Attributes["class"] = "mensagem ";

            try
            {
                AcomodacaoBO.Excluir(id, 0);

                pesquisar();

                showMensagem("sucesso", "Registro excluído com sucesso!");
            }
            catch (Exception)
            {

                throw;
            }
        }

        public void alterar()
        {
            divMensagem.Attributes["class"] = "mensagem ";

            try
            {
                if (!string.IsNullOrEmpty(txtEditar_ID.Text))
                {
                    Acomodacao obj = new Acomodacao();

                    obj.id = int.Parse(txtEditar_ID.Text);
                    obj.acomodacaoTipoID = int.Parse(ddlEditar_TipoAcomodacao.SelectedValue);
                    obj.descricao = txtEditar_Descricao.Text.Trim();
                    obj.nome = txtEditar_Nome.Text.Trim();

                    AcomodacaoBO.Salvar(obj, 0);

                    setActive("editar");

                    showMensagem("sucesso", "Registro alterado com sucesso!");
                }
            }
            catch (Exception)
            {

                throw;
            }
        }
        public void cadastrar()
        {
            divMensagem.Attributes["class"] = "mensagem ";

            try
            {
                Acomodacao obj = new Acomodacao();

                obj.acomodacaoTipoID = int.Parse(ddlCadastrar_TipoAcomodacao.SelectedValue);
                obj.descricao = txtCadastrar_Descricao.Text.Trim();
                obj.nome = txtCadastrar_Nome.Text.Trim();
                obj.acomodacaoStatusID = 1;

                AcomodacaoBO.Salvar(obj, 0);

                limpFormCadastrar();

                setActive("cadastrar");

                showMensagem("sucesso", "Registro cadastrado com sucesso!");
            }
            catch (Exception)
            {

                throw;
            }
        }

        public void limpFormCadastrar()
        {
            divMensagem.Attributes["class"] = "mensagem ";

            ddlCadastrar_TipoAcomodacao.SelectedIndex = 0;
            txtCadastrar_Descricao.Text = "";
            txtCadastrar_Nome.Text = "";
        }
        #endregion

        #region Eventos do form
        #region Botes



        #region Tela Pesquisar
        protected void btnPesquisar_OnClick(object sender, EventArgs e)
        {
            try
            {
                pesquisar();
            }
            catch (Exception)
            {
                // Fazer o css que exibe a mensagem de erro numa janela com animação de html5
                throw;
            }
        }

        protected void btnCarregaForm_OnClick(object sender, EventArgs e)
        {
            try
            {
                setActive("editar");
                LinkButton btn = (LinkButton)sender;
                int id = int.Parse(btn.CommandArgument.ToString());
                carregaForm(id);
            }
            catch (Exception)
            {
                // Fazer o css que exibe a mensagem de erro numa janela com animação de html5
                throw;
            }
        }

        protected void btnExcluir_OnClick(object sender, EventArgs e)
        {
            try
            {
                LinkButton btn = (LinkButton)sender;
                int id = int.Parse(btn.CommandArgument.ToString());
                excluir(id);
            }
            catch (Exception)
            {
                // Fazer o css que exibe a mensagem de erro numa janela com animação de html5
                throw;
            }
        }
        #endregion

        #region Tela Editar
        protected void btnEditarVoltar_OnClick(object sender, EventArgs e)
        {
            try
            {
                setActive("pesquisar");
            }
            catch (Exception ex)
            {
                showMensagem("erro", ex.Message);
            }
        }
        protected void btnEditarSalvar_OnClick(object sender, EventArgs e)
        {
            try
            {
                alterar();
            }
            catch (Exception ex)
            {
                showMensagem("erro", ex.Message);
            }
        }
        #endregion

        #region Tela Cadastrar
        protected void btnCadastrarSalvar_OnClick(object sender, EventArgs e)
        {
            try
            {
                cadastrar();
            }
            catch (Exception ex)
            {
                showMensagem("erro", ex.Message);
            }
        }
        protected void btnCadastrarVoltar_OnClick(object sender, EventArgs e)
        {
            try
            {
                setActive("pesquisar");
            }
            catch (Exception ex)
            {
                showMensagem("erro", ex.Message);
            }
        }

        #endregion

        #endregion

        #endregion
    }
}
